<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class ContentTemplateModel extends Model
{

    protected $fillable = [
        'title','author','name','site','package','preview','using'
    ];
    protected $casts =[
        'package'=>'array',
    ];

    //将模板中的配置项写入到数据库中
    public static function loadTemplate(){
        //self代表当前模型类,静态调用truncate()方法
        self::truncate();
//        通过public_path('theme')可以返回当前laravel框架中public文件夹下的theme的绝对路径
        //glob函数返回一个包含匹配文件/目录的数组
        foreach (glob(public_path('theme').'\*') as $dir){
            $package =  json_decode(file_get_contents($dir.'\package.json'),true);
//            模板的目录名称
            $package['name'] = basename($dir);
            $package['package'] = $package;
            $package['preview'] = '/theme/'.$package['name'].'/'.$package['preview'];
            self::create($package);
        }
        return new self;
    }

//   获取当前正在使用的模板目录
//在laravel框架中如果一个类中的某个方法名是"get方法名Attribute",那就允许用调用属性的形式"对象->方法名"调用这个方法
    protected function getDirAttribute(){
         $name = self::where('using',1)->value('name');
         //public_path函数返回当前laravel框架中public目录的绝对路径
         return public_path('theme/'.$name);
    }



}
